<?php


class Lexer
{

    private $compileEngine;
    private $stateStack;
    private $parenCount;
    private $refBraceCount = 0;
	function raiseError($msg, $code, $fatal) {
		$msg .= " on line " . ($this->yyline + 1) . ' in state ' . $this->getStateName($this->getState());
        throw new GeryParseErrorException($msg);
    }
    public function getStateName($state) {
    	$class = new ReflectionClass('Lexer');
    	$stateName = 'YY_INITIAL';
    	foreach ($class->getConstants() as $name => $value) {
        	if (substr($name, 0, 3) == 'IN_' && $value == $state) {
        		$stateName = $name;
        	}
        }
        return $stateName;
    }
    public function getState() {
    	return $this->yy_lexical_state;
    }
    public function getStates() {
    	if (! isset($this->stateStack))
    		return array();
    	return $this->stateStack;
    }
    public function reset() {
    	$this->yy_buffer_index = 0;
        $this->yy_buffer_start = 0;
        $this->yy_buffer_end = 0;
        $this->yychar = 0;
        $this->yyline = 0;
        $this->yy_at_bol = true;
        $this->yy_lexical_state = self::YYINITIAL;
	}
	public function setInput($input) {
		$this->yy_buffer = $input;
		 $this->yy_buffer_read = strlen($input);
	}
	public function setCompileEngine($engine) {
    	$this->compileEngine = $engine;
    }
    private function pushState() {
    	$this->stateStack[] = $this->yy_lexical_state;
    }
    public function popState() {
    	if (! count($this->stateStack)) {
    		$this->yy_lexical_state = self::YYINITIAL;
    	} else {
    		$this->yy_lexical_state = array_pop($this->stateStack);
    	}
    	return $this->yy_lexical_state;
    }
    public function fallbackToState($state) {
    	while (($poppedState = $this->popState()) !== null) {
    		if ($poppedState == $state)
    			return;
    	}
    }
    private function newToken($type, $value = null) {
    	$token = new Token();
    	$token->type = $type;
    	$token->value = $value;
    	$token->offset = $this->yy_buffer_index - $this->yylength();
    	// add one to the linenumber because it starts counting at zero
    	$token->line = $this->yyline + 1;
    	return $token;
    }


    const YY_BUFFER_SIZE = 512;
    const YY_F = -1;
    const YY_NO_STATE = -1;
    const YY_NOT_ACCEPT = 0;
    const YY_START = 1;
    const YY_END = 2;
    const YY_NO_ANCHOR = 4;
    const YY_BOL = 257;
    const YY_EOF = 258;

    public $yy_reader;
    public $yy_buffer_index;
    public $yy_buffer_read;
    public $yy_buffer_start;
    public $_fatal = false;
    public $yy_buffer_end;
    public $yy_buffer;
    private $yychar;
    public $yyline;
    public $yyEndOfLine;
    public $yy_at_bol;
    public $yy_lexical_state;

    function Lexer($data) 
    {
        $this->yy_buffer = $data;
        $this->yy_buffer_read = strlen($data);
        $this->yy_buffer_index = 0;
        $this->yy_buffer_start = 0;
        $this->yy_buffer_end = 0;
        $this->yychar = 0;
        $this->yyline = 0;
        $this->yy_at_bol = true;
        $this->yy_lexical_state = self::YYINITIAL;
    }

    const IN_INTERPOLATE = 7;
    const IN_MULTILINE_COMMENT = 3;
    const IN_DOUBLE_QUOTES = 6;
    const IN_DIRECTIVE = 5;
    const IN_START_DIRECTIVE = 8;
    const IN_PARAMETER = 2;
    const IN_REFERENCE = 1;
    const IN_COMMENT = 4;
    const YYINITIAL = 0;
    public $yy_state_dtrans = array  ( 
        0,
        79,
        82,
        98,
        104,
        106,
        112,
        114,
        116
    );


    function yybegin ($state)
    {
        $this->yy_lexical_state = $state;
    }



    function yy_advance ()
    {
        if ($this->yy_buffer_index < $this->yy_buffer_read) {
            return ord($this->yy_buffer{$this->yy_buffer_index++});
        }
        return self::YY_EOF;
    }


    function yy_move_end ()
    {
        if ($this->yy_buffer_end > $this->yy_buffer_start && 
            '\n' == $this->yy_buffer{$this->yy_buffer_end-1})
        {
            $this->yy_buffer_end--;
        }
        if ($this->yy_buffer_end > $this->yy_buffer_start &&
            '\r' == $this->yy_buffer{$this->yy_buffer_end-1})
        {
            $this->yy_buffer_end--;
        }
    }


    public $yy_last_was_cr=false;


    function yy_mark_start ()
    {
        for ($i = $this->yy_buffer_start; $i < $this->yy_buffer_index; $i++) {
            if ($this->yy_buffer{$i} == "\n" && !$this->yy_last_was_cr) {
                $this->yyline++; $this->yyEndOfLine = $this->yychar;
            }
            if ($this->yy_buffer{$i} == "\r") {
                $this->yyline++; $this->yyEndOfLine = $this->yychar;
                $this->yy_last_was_cr=true;
            } else {
                $this->yy_last_was_cr=false;
            }
        }
        $this->yychar = $this->yychar + $this->yy_buffer_index - $this->yy_buffer_start;
        $this->yy_buffer_start = $this->yy_buffer_index;
    }


    function yy_mark_end ()
    {
        $this->yy_buffer_end = $this->yy_buffer_index;
    }


    function  yy_to_mark ()
    {
        $this->yy_buffer_index = $this->yy_buffer_end;
        $this->yy_at_bol = ($this->yy_buffer_end > $this->yy_buffer_start) &&
            ($this->yy_buffer{$this->yy_buffer_end-1} == '\r' ||
            $this->yy_buffer{$this->yy_buffer_end-1} == '\n');
    }


    function yytext()
    {
        return substr($this->yy_buffer,$this->yy_buffer_start,$this->yy_buffer_end - $this->yy_buffer_start);
    }


    function yylength ()
    {
        return $this->yy_buffer_end - $this->yy_buffer_start;
    }


    const YY_E_INTERNAL = 0;
    const YY_E_MATCH = 1;

    public $yy_error_string = array(
        "Internal error",
        "Unmatched input"
        );


    function yy_error ($code, $fatal)
    {
        if (method_exists($this, 'raiseError')) { 
	        $this->_fatal = $fatal;
            $msg = $this->yy_error_string[$code];
            if ($code == 1) {
                $msg .= " - \"" . $this->yy_buffer[$this->yy_buffer_start] . "\"";
            }
 		    return $this->raiseError($msg, $code, $fatal); 
 		}
        echo "Error: " . $this->yy_error_string[$code] . "\n";
        if ($fatal) {
            exit;
        }
    }


    public  $yy_acpt = array (
        /* 0 */   Lexer::YY_NOT_ACCEPT,
        /* 1 */   Lexer::YY_NO_ANCHOR,
        /* 2 */   Lexer::YY_NO_ANCHOR,
        /* 3 */   Lexer::YY_NO_ANCHOR,
        /* 4 */   Lexer::YY_NO_ANCHOR,
        /* 5 */   Lexer::YY_NO_ANCHOR,
        /* 6 */   Lexer::YY_NO_ANCHOR,
        /* 7 */   Lexer::YY_NO_ANCHOR,
        /* 8 */   Lexer::YY_NO_ANCHOR,
        /* 9 */   Lexer::YY_NO_ANCHOR,
        /* 10 */   Lexer::YY_NO_ANCHOR,
        /* 11 */   Lexer::YY_NO_ANCHOR,
        /* 12 */   Lexer::YY_NO_ANCHOR,
        /* 13 */   Lexer::YY_NO_ANCHOR,
        /* 14 */   Lexer::YY_NO_ANCHOR,
        /* 15 */   Lexer::YY_NO_ANCHOR,
        /* 16 */   Lexer::YY_NO_ANCHOR,
        /* 17 */   Lexer::YY_NO_ANCHOR,
        /* 18 */   Lexer::YY_NO_ANCHOR,
        /* 19 */   Lexer::YY_NO_ANCHOR,
        /* 20 */   Lexer::YY_NO_ANCHOR,
        /* 21 */   Lexer::YY_NO_ANCHOR,
        /* 22 */   Lexer::YY_NO_ANCHOR,
        /* 23 */   Lexer::YY_NO_ANCHOR,
        /* 24 */   Lexer::YY_NO_ANCHOR,
        /* 25 */   Lexer::YY_NO_ANCHOR,
        /* 26 */   Lexer::YY_NO_ANCHOR,
        /* 27 */   Lexer::YY_NO_ANCHOR,
        /* 28 */   Lexer::YY_NO_ANCHOR,
        /* 29 */   Lexer::YY_NO_ANCHOR,
        /* 30 */   Lexer::YY_NO_ANCHOR,
        /* 31 */   Lexer::YY_NO_ANCHOR,
        /* 32 */   Lexer::YY_NO_ANCHOR,
        /* 33 */   Lexer::YY_NO_ANCHOR,
        /* 34 */   Lexer::YY_NO_ANCHOR,
        /* 35 */   Lexer::YY_NO_ANCHOR,
        /* 36 */   Lexer::YY_NO_ANCHOR,
        /* 37 */   Lexer::YY_NO_ANCHOR,
        /* 38 */   Lexer::YY_NO_ANCHOR,
        /* 39 */   Lexer::YY_NO_ANCHOR,
        /* 40 */   Lexer::YY_NO_ANCHOR,
        /* 41 */   Lexer::YY_NO_ANCHOR,
        /* 42 */   Lexer::YY_NO_ANCHOR,
        /* 43 */   Lexer::YY_NO_ANCHOR,
        /* 44 */   Lexer::YY_NO_ANCHOR,
        /* 45 */   Lexer::YY_NO_ANCHOR,
        /* 46 */   Lexer::YY_NO_ANCHOR,
        /* 47 */   Lexer::YY_NO_ANCHOR,
        /* 48 */   Lexer::YY_NO_ANCHOR,
        /* 49 */   Lexer::YY_NO_ANCHOR,
        /* 50 */   Lexer::YY_NO_ANCHOR,
        /* 51 */   Lexer::YY_NO_ANCHOR,
        /* 52 */   Lexer::YY_NO_ANCHOR,
        /* 53 */   Lexer::YY_NO_ANCHOR,
        /* 54 */   Lexer::YY_NO_ANCHOR,
        /* 55 */   Lexer::YY_NO_ANCHOR,
        /* 56 */   Lexer::YY_NO_ANCHOR,
        /* 57 */   Lexer::YY_NO_ANCHOR,
        /* 58 */   Lexer::YY_NO_ANCHOR,
        /* 59 */   Lexer::YY_NO_ANCHOR,
        /* 60 */   Lexer::YY_NO_ANCHOR,
        /* 61 */   Lexer::YY_NO_ANCHOR,
        /* 62 */   Lexer::YY_NO_ANCHOR,
        /* 63 */   Lexer::YY_NO_ANCHOR,
        /* 64 */   Lexer::YY_NO_ANCHOR,
        /* 65 */   Lexer::YY_NO_ANCHOR,
        /* 66 */   Lexer::YY_NO_ANCHOR,
        /* 67 */   Lexer::YY_NO_ANCHOR,
        /* 68 */   Lexer::YY_NO_ANCHOR,
        /* 69 */   Lexer::YY_NO_ANCHOR,
        /* 70 */   Lexer::YY_NOT_ACCEPT,
        /* 71 */   Lexer::YY_NO_ANCHOR,
        /* 72 */   Lexer::YY_NO_ANCHOR,
        /* 73 */   Lexer::YY_NO_ANCHOR,
        /* 74 */   Lexer::YY_NO_ANCHOR,
        /* 75 */   Lexer::YY_NO_ANCHOR,
        /* 76 */   Lexer::YY_NOT_ACCEPT,
        /* 77 */   Lexer::YY_NO_ANCHOR,
        /* 78 */   Lexer::YY_NO_ANCHOR,
        /* 79 */   Lexer::YY_NOT_ACCEPT,
        /* 80 */   Lexer::YY_NO_ANCHOR,
        /* 81 */   Lexer::YY_NO_ANCHOR,
        /* 82 */   Lexer::YY_NOT_ACCEPT,
        /* 83 */   Lexer::YY_NO_ANCHOR,
        /* 84 */   Lexer::YY_NOT_ACCEPT,
        /* 85 */   Lexer::YY_NO_ANCHOR,
        /* 86 */   Lexer::YY_NOT_ACCEPT,
        /* 87 */   Lexer::YY_NO_ANCHOR,
        /* 88 */   Lexer::YY_NOT_ACCEPT,
        /* 89 */   Lexer::YY_NO_ANCHOR,
        /* 90 */   Lexer::YY_NOT_ACCEPT,
        /* 91 */   Lexer::YY_NO_ANCHOR,
        /* 92 */   Lexer::YY_NOT_ACCEPT,
        /* 93 */   Lexer::YY_NO_ANCHOR,
        /* 94 */   Lexer::YY_NOT_ACCEPT,
        /* 95 */   Lexer::YY_NO_ANCHOR,
        /* 96 */   Lexer::YY_NOT_ACCEPT,
        /* 97 */   Lexer::YY_NO_ANCHOR,
        /* 98 */   Lexer::YY_NOT_ACCEPT,
        /* 99 */   Lexer::YY_NO_ANCHOR,
        /* 100 */   Lexer::YY_NOT_ACCEPT,
        /* 101 */   Lexer::YY_NO_ANCHOR,
        /* 102 */   Lexer::YY_NOT_ACCEPT,
        /* 103 */   Lexer::YY_NO_ANCHOR,
        /* 104 */   Lexer::YY_NOT_ACCEPT,
        /* 105 */   Lexer::YY_NO_ANCHOR,
        /* 106 */   Lexer::YY_NOT_ACCEPT,
        /* 107 */   Lexer::YY_NO_ANCHOR,
        /* 108 */   Lexer::YY_NOT_ACCEPT,
        /* 109 */   Lexer::YY_NO_ANCHOR,
        /* 110 */   Lexer::YY_NOT_ACCEPT,
        /* 111 */   Lexer::YY_NO_ANCHOR,
        /* 112 */   Lexer::YY_NOT_ACCEPT,
        /* 113 */   Lexer::YY_NO_ANCHOR,
        /* 114 */   Lexer::YY_NOT_ACCEPT,
        /* 115 */   Lexer::YY_NO_ANCHOR,
        /* 116 */   Lexer::YY_NOT_ACCEPT,
        /* 117 */   Lexer::YY_NO_ANCHOR,
        /* 118 */   Lexer::YY_NO_ANCHOR,
        /* 119 */   Lexer::YY_NO_ANCHOR,
        /* 120 */   Lexer::YY_NO_ANCHOR,
        /* 121 */   Lexer::YY_NO_ANCHOR,
        /* 122 */   Lexer::YY_NO_ANCHOR,
        /* 123 */   Lexer::YY_NO_ANCHOR,
        /* 124 */   Lexer::YY_NO_ANCHOR,
        /* 125 */   Lexer::YY_NO_ANCHOR,
        /* 126 */   Lexer::YY_NO_ANCHOR
        );


    public  $yy_cmap = array(
        45, 45, 45, 45, 45, 45, 45, 45,
        45, 29, 25, 45, 45, 25, 45, 45,
        45, 45, 45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45, 45, 45,
        29, 26, 44, 1, 4, 35, 28, 46,
        30, 31, 2, 33, 42, 34, 40, 36,
        43, 43, 43, 43, 43, 43, 43, 43,
        43, 43, 45, 45, 39, 37, 38, 45,
        45, 23, 23, 23, 23, 23, 23, 23,
        23, 23, 23, 23, 23, 23, 23, 23,
        23, 23, 23, 23, 23, 23, 23, 23,
        23, 23, 23, 32, 3, 41, 45, 24,
        45, 13, 23, 14, 7, 5, 11, 23,
        17, 10, 23, 23, 8, 12, 6, 16,
        19, 23, 15, 9, 18, 20, 23, 23,
        23, 23, 23, 21, 27, 22, 45, 45,
        45, 45, 45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45, 45, 45,
        45, 0, 0 
         );


    public $yy_rmap = array(
        0, 1, 2, 3, 4, 5, 1, 1,
        6, 1, 1, 1, 7, 8, 8, 8,
        9, 8, 8, 8, 8, 8, 8, 1,
        10, 1, 1, 1, 11, 1, 1, 12,
        1, 1, 1, 13, 1, 1, 1, 1,
        1, 1, 1, 14, 15, 1, 1, 16,
        17, 1, 1, 1, 1, 1, 18, 1,
        19, 1, 20, 1, 1, 21, 20, 20,
        1, 1, 1, 22, 23, 1, 24, 25,
        26, 27, 1, 20, 28, 29, 30, 31,
        32, 33, 34, 35, 36, 37, 5, 38,
        21, 39, 40, 41, 42, 43, 44, 45,
        46, 47, 48, 49, 50, 51, 52, 53,
        54, 55, 56, 57, 58, 59, 60, 61,
        62, 63, 64, 65, 66, 67, 68, 8,
        69, 70, 71, 72, 73, 74, 75 
        );


    public $yy_nxt = array(
        array( 1, 2, 3, 4, 5, 3, 3, 3,
            3, 3, 3, 3, 3, 3, 3, 3,
            3, 3, 3, 3, 3, 3, 3, 3,
            3, 3, 3, 3, 3, 3, 3, 3,
            3, 3, 3, 3, 3, 3, 3, 3,
            3, 3, 3, 3, 3, 3, 3 ),
        array( -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1 ),
        array( -1, 6, 7, -1, -1, 8, 119, 119,
            119, 123, 72, 124, 125, 119, 119, 119,
            119, 119, 119, 126, 119, 9, -1, 119,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1 ),
        array( -1, -1, 3, -1, -1, 3, 3, 3,
            3, 3, 3, 3, 3, 3, 3, 3,
            3, 3, 3, 3, 3, 3, 3, 3,
            3, 3, 3, 3, 3, 3, 3, 3,
            3, 3, 3, 3, 3, 3, 3, 3,
            3, 3, 3, 3, 3, 3, 3 ),
        array( -1, 10, -1, 71, 11, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 12, 12, 12,
            12, 12, 12, 12, 12, 12, 12, 12,
            12, 12, 12, 12, 12, 70, -1, 12,
            -1, -1, 76, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 119, 77, 119,
            80, 119, 119, 119, 119, 119, 119, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 12, 12, 12,
            12, 12, 12, 12, 12, 12, 12, 12,
            12, 12, 12, 12, 12, -1, -1, 12,
            12, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 12, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 119, 119, 119, 119, 119, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 111, 119, 119, 119, 119, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 24, 24, 24,
            24, 24, 24, 24, 24, 24, 24, 24,
            24, 24, 24, 24, 24, -1, -1, 24,
            24, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 24, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, 28, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            32, -1, -1, -1, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, 49, -1, -1,
            -1, -1, -1, -1, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, 51, -1, -1,
            -1, -1, -1, -1, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, 52, -1, -1,
            -1, -1, -1, -1, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 47, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 48, 48, 48,
            48, 48, 48, 48, 48, 48, 48, 48,
            48, 48, 48, 48, 48, -1, -1, 48,
            48, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 48, -1, -1, -1 ),
        array( -1, 54, 102, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54 ),
        array( -1, 56, 56, 56, 56, 56, 56, 56,
            56, 56, 56, 56, 56, 56, 56, 56,
            56, 56, 56, 56, 56, 56, 56, 56,
            56, -1, 56, 56, 56, 56, 56, 56,
            56, 56, 56, 56, 56, 56, 56, 56,
            56, 56, 56, 56, 56, 56, 56 ),
        array( -1, -1, -1, -1, -1, 58, 58, 58,
            58, 58, 58, 58, 58, 58, 58, 58,
            58, 58, 58, 58, 58, -1, -1, 58,
            58, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 58, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, 50, -1, -1,
            -1, -1, -1, -1, -1, -1, -1 ),
        array( -1, 67, 67, 67, 67, 67, 67, 67,
            67, 67, 67, 67, 67, 67, 67, 67,
            67, 67, 67, 67, 67, 67, 67, 67,
            67, 67, 67, 67, 67, -1, -1, 67,
            67, 67, 67, 67, 67, 67, 67, 67,
            67, 67, 67, 67, 67, 67, 67 ),
        array( -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, 68, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 12, 12, 12,
            12, 12, 12, 12, 12, 12, 12, 12,
            12, 12, 12, 12, 12, -1, -1, 12,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1 ),
        array( -1, -1, -1, 4, 11, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 119, 87, 119,
            119, 119, 119, 13, 119, 119, 119, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 58, 62, 58,
            58, 58, 58, 58, 58, 58, 58, 58,
            58, 58, 58, 58, 58, -1, -1, 58,
            58, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 58, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 12, 12, 12,
            12, 12, 12, 12, 12, 12, 12, 12,
            12, 12, 12, 12, 12, 70, -1, 12,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 119, 119, 14,
            119, 119, 119, 119, 119, 119, 119, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 58, 58, 58,
            58, 58, 58, 58, 58, 58, 58, 63,
            58, 58, 58, 58, 58, -1, -1, 58,
            58, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 58, -1, -1, -1 ),
        array( 1, 23, 23, 23, 23, 24, 24, 24,
            24, 24, 24, 24, 24, 24, 24, 24,
            24, 24, 24, 24, 24, 25, 26, 24,
            23, 23, 27, 23, 23, 28, 29, 23,
            30, 23, 23, 23, 23, 23, 23, 23,
            31, 23, 23, 23, 23, 23, 23 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 91, 119, 119, 119, 119, 119, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 58, 58, 75,
            58, 58, 58, 58, 58, 58, 58, 58,
            58, 58, 58, 58, 58, -1, -1, 58,
            58, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 58, -1, -1, -1 ),
        array( 1, 84, 33, -1, 86, 24, 24, 24,
            24, 24, 24, 24, 24, 24, 24, 24,
            24, 24, 24, 24, 24, -1, 26, 24,
            -1, 34, 35, -1, -1, 36, 37, 38,
            30, 39, 40, 41, 42, 88, 43, 44,
            31, 45, 46, 47, 90, -1, 92 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 119, 119, 119, 119, 119, 119,
            119, 119, 15, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, 7, -1, -1, 48, 48, 48,
            48, 48, 48, 48, 48, 48, 48, 48,
            48, 48, 48, 48, 48, -1, -1, 48,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 119, 119, 119, 119, 119, 119,
            93, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 119, 119, 119, 119, 95, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 119, 119, 119, 119, 119, 97,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, 90, 90, 94, 90, 90, 90, 90,
            90, 90, 90, 90, 90, 90, 90, 90,
            90, 90, 90, 90, 90, 90, 90, 90,
            90, 90, 90, 90, 90, 90, 90, 90,
            90, 90, 90, 90, 90, 90, 90, 90,
            90, 90, 90, 90, 53, 90, 90 ),
        array( -1, -1, -1, -1, -1, 16, 119, 119,
            119, 119, 119, 119, 119, 119, 119, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, 92, 92, 96, 92, 92, 92, 92,
            92, 92, 92, 92, 92, 92, 92, 92,
            92, 92, 92, 92, 92, 92, 92, 92,
            92, 92, 92, 92, 92, 92, 92, 92,
            92, 92, 92, 92, 92, 92, 92, 92,
            92, 92, 92, 92, 92, 92, 53 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 119, 119, 119, 119, 119, 119,
            119, 119, 119, 17, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, 90, 90, 90, 90, 90, 90, 90,
            90, 90, 90, 90, 90, 90, 90, 90,
            90, 90, 90, 90, 90, 90, 90, 90,
            90, -1, 90, 90, 90, 90, 90, 90,
            90, 90, 90, 90, 90, 90, 90, 90,
            90, 90, 90, 90, 90, 90, 90 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            103, 119, 119, 119, 119, 119, 119, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, 92, 92, 92, 92, 92, 92, 92,
            92, 92, 92, 92, 92, 92, 92, 92,
            92, 92, 92, 92, 92, 92, 92, 92,
            92, -1, 92, 92, 92, 92, 92, 92,
            92, 92, 92, 92, 92, 92, 92, 92,
            92, 92, 92, 92, 92, 92, 92 ),
        array( -1, -1, -1, -1, -1, 105, 119, 119,
            119, 119, 119, 119, 119, 119, 119, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( 1, 54, 100, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 119, 119, 119, 119, 119, 107,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, 55, 54, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 109, 119, 119, 119, 119, 119, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, 54, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54, 54,
            54, 54, 54, 54, 54, 54, 54 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 119, 119, 119, 119, 119, 119,
            119, 119, 119, 119, 113, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( 1, 56, 56, 56, 56, 56, 56, 56,
            56, 56, 56, 56, 56, 56, 56, 56,
            56, 56, 56, 56, 56, 56, 56, 56,
            56, 57, 56, 56, 56, 56, 56, 56,
            56, 56, 56, 56, 56, 56, 56, 56,
            56, 56, 56, 56, 56, 56, 56 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 119, 119, 119, 115, 119, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( 1, 84, 33, -1, 86, 58, 58, 58,
            58, 58, 73, 58, 58, 120, 58, 58,
            78, 58, 58, 58, 58, -1, -1, 58,
            -1, 34, 35, 108, 110, 36, 59, 60,
            30, 39, 40, 41, 42, 61, 43, 44,
            31, -1, 46, 47, 90, -1, 92 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 119, 119, 119, 119, 119, 119,
            18, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 74, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 19, 119, 119,
            119, 119, 119, 119, 119, 119, 119, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, 64, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 119, 20, 119, 119, 119, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( 1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 119, 119, 117,
            119, 119, 119, 119, 119, 119, 119, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( 1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, 65, 66, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 119, 119, 119, 119, 118, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( 1, 67, 67, 67, 67, 67, 67, 67,
            67, 67, 67, 67, 67, 67, 67, 67,
            67, 67, 67, 67, 67, 67, 67, 67,
            67, 67, 67, 67, 67, 68, 69, 67,
            67, 67, 67, 67, 67, 67, 67, 67,
            67, 67, 67, 67, 67, 67, 67 ),
        array( -1, -1, -1, -1, -1, 21, 119, 119,
            119, 119, 119, 119, 119, 119, 119, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 119, 119, 119, 119, 119, 119,
            119, 22, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 58, 81, 58,
            58, 58, 58, 58, 58, 58, 58, 58,
            58, 58, 58, 58, 58, -1, -1, 58,
            58, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 58, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 119, 119, 119, 119, 99, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 119, 119, 119, 119, 119, 101,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 83, 119, 119,
            119, 119, 119, 119, 119, 119, 119, 119,
            119, 119, 85, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 119, 119, 119, 119, 119, 119,
            89, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 119, 119, 119, 121, 119, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 ),
        array( -1, -1, -1, -1, -1, 119, 119, 119,
            119, 119, 119, 119, 119, 122, 119, 119,
            119, 119, 119, 119, 119, -1, -1, 119,
            119, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, -1, -1, -1, -1, -1,
            -1, -1, -1, 119, -1, -1, -1 )
        );


    function  yylex()
    {
        $yy_lookahead = '';
        $yy_anchor = self::YY_NO_ANCHOR;
        $yy_state = $this->yy_state_dtrans[$this->yy_lexical_state];
        $yy_next_state = self::YY_NO_STATE;
         $yy_last_accept_state = self::YY_NO_STATE;
        $yy_initial = true;
        $yy_this_accept = 0;
        
        $this->yy_mark_start();
        $yy_this_accept = $this->yy_acpt[$yy_state];
        if (self::YY_NOT_ACCEPT != $yy_this_accept) {
            $yy_last_accept_state = $yy_state;
            $this->yy_buffer_end = $this->yy_buffer_index;
        }
        while (true) {
            if ($yy_initial && $this->yy_at_bol) {
                $yy_lookahead =  self::YY_BOL;
            } else {
                $yy_lookahead = $this->yy_advance();
            }
            $yy_next_state = $this->yy_nxt[$this->yy_rmap[$yy_state]][$this->yy_cmap[$yy_lookahead]];
            if (self::YY_EOF == $yy_lookahead && $yy_initial) {
                
	return false;

            }
            if (self::YY_F != $yy_next_state) {
                $yy_state = $yy_next_state;
                $yy_initial = false;
                $yy_this_accept = $this->yy_acpt[$yy_state];
                if (self::YY_NOT_ACCEPT != $yy_this_accept) {
                    $yy_last_accept_state = $yy_state;
                    $this->yy_buffer_end = $this->yy_buffer_index;
                }
            } else {
                if (self::YY_NO_STATE == $yy_last_accept_state) {
                    $this->yy_error(1,1);
                    if ($this->_fatal) {
                        return;
                    }
                } else {
                    $yy_anchor = $this->yy_acpt[$yy_last_accept_state];
                    if (0 != (self::YY_END & $yy_anchor)) {
                        $this->yy_move_end();
                    }
                    $this->yy_to_mark();
                    if ($yy_last_accept_state < 0) {
                        if ($yy_last_accept_state < 127) {
                            $this->yy_error(self::YY_E_INTERNAL, false);
                            if ($this->_fatal) {
                                return;
                            }
                        }
                    } else {

                        switch ($yy_last_accept_state) {
case 2:
{
	return $this->newToken(TK_SMURK, $this->yytext());
}
case 3:
{
	$smurk = $this->yytext();
	return $this->newToken(TK_SMURK, $this->yytext());
}
case 4:
{
	return $this->newToken(TK_SMURK, $this->yytext());
}
case 5:
{
	$smurk = $this->yytext();
	return $this->newToken(TK_SMURK, $this->yytext());
}
case 6:
{
	$this->yybegin(self::IN_COMMENT);
	return null;
}
case 7:
{
	if ($this->yy_lexical_state == self::YYINITIAL) {
	$this->yybegin(self::IN_MULTILINE_COMMENT);
		return null;
	} else {
		return $this->newToken(TK_SMURK, $this->yytext());
	}
}
case 8:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 9:
{
	// go into interpolation state
	$this->pushState();
	$this->yybegin(self::IN_INTERPOLATE);
	$this->yy_buffer_index--;
	return $this->newToken(TK_INTERPOLATE);
}
case 10:
{
	$pos = strrpos($this->yytext(), '\\');
	$escapes = str_repeat('\\', $pos / 2);
	$ret = $escapes . substr($this->yytext(), $pos + 1);
	return $this->newToken(TK_SMURK, $ret);
}
case 11:
{
	$escapes = substr($this->yytext(), 0, -1);
	$this->yy_buffer_index--;
	return $this->newToken(TK_ESCAPES, $escapes);
}
case 12:
{
	$this->pushState();
	$this->yybegin(self::IN_REFERENCE);
	$token = $this->newToken(TK_DOLLAR);
	$this->yy_buffer_index -= ($this->yylength() - 1);
	return $token;
}
case 13:
{
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_IF);
}
case 14:
{
	return $this->newToken(TK_END);
}
case 15:
{
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_SET);
}
case 16:
{
	return $this->newToken(TK_ELSE);
}
case 17:
{
	return $this->newToken(TK_STOP);
}
case 18:
{
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_MACRO);
}
case 19:
{
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_PARSE);
}
case 20:
{
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_ELSEIF);
}
case 21:
{
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_INCLUDE);
}
case 22:
{
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_FOREACH);
}
case 23:
{
	// get the previous state from stack
	$this->popState();
	$this->yy_buffer_index--;
	return null;
}
case 24:
{
	return $this->newToken(TK_ID, $this->yytext());
}
case 25:
{
	$this->refBraceCount++;
	return $this->newToken(TK_LBRACE);
}
case 26:
{
	if ($this->refBraceCount > 0) {
		$this->refBraceCount--;
		$this->popState();
		return $this->newToken(TK_RBRACE);
	} else {
		// a right brace is encountered, this state is called from the 
		// IN_INTERPOLATION state
		// pop the current state of the stack
		$this->fallbackToState(self::IN_INTERPOLATE);
		$this->yy_buffer_index--;
		// return a right brace
		return null;	
	}
}
case 27:
{
	// the SILENT token
	// get the preceding character
	$precedingCharacter = substr($this->yy_buffer, $this->yy_buffer_index - 2, 1);
	// if a dollar sign precedes this silent token its ok
	if ($precedingCharacter == '$') {
		// return a silencing token
		return $this->newToken(TK_SILENT);
	} else {
		$this->yy_buffer_index--;
		$this->popState();
		return null;
	}
}
case 28:
{
	$this->popState();
	if ($this->yy_lexical_state == self::YYINITIAL) {
		return $this->newToken(TK_SMURK, $this->yytext());
	} else {
		// skip whitespace if we are not in smurk
		return null;
	}
}
case 29:
{
	// push current state on the stack
	$this->pushState();
	$this->yybegin(self::IN_PARAMETER);
	return $this->newToken(TK_LPAREN);
}
case 30:
{
	$this->pushState();
	$this->yybegin(self::IN_PARAMETER);
	return $this->newToken(TK_LBRACKET);
}
case 31:
{
	return $this->newToken(TK_DOT);
}
case 32:
{
	return $this->newToken(TK_DOTDOT);
}
case 33:
{
	return $this->newToken(TK_STAR);
}
case 34:
{
	// new lines are ignored in directives
	return null;
}
case 35:
{
	return $this->newToken(TK_NOT);
}
case 36:
{
	// ignore
	return null;
}
case 37:
{
	$this->pushState();
	$this->yybegin(self::IN_PARAMETER);
	return $this->newToken(TK_LPAREN);
}
case 38:
{
	// get state from the stack
	$this->popState();
	return $this->newToken(TK_RPAREN);
}
case 39:
{
	return $this->newToken(TK_PLUS);
}
case 40:
{
	return $this->newToken(TK_MIN);
}
case 41:
{
	return $this->newToken(TK_PERCENT);
}
case 42:
{
	return $this->newToken(TK_SLASH);
}
case 43:
{
	return $this->newToken(TK_GT);
}
case 44:
{
	return $this->newToken(TK_LT);
}
case 45:
{
	// get state from the stack
	$this->popState();
	return $this->newToken(TK_RBRACKET);
}
case 46:
{
	return $this->newToken(TK_COMMA);
}
case 47:
{
	return $this->newToken(TK_NUMBER, $this->yytext());
}
case 48:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 49:
{
	return $this->newToken(TK_NOT_EQUAL);
}
case 50:
{
	return $this->newToken(TK_EQUAL);
}
case 51:
{
	return $this->newToken(TK_GE);
}
case 52:
{
	return $this->newToken(TK_LE);
}
case 53:
{
	return $this->newToken(TK_STRING, substr($this->yytext(), 1, -1));
}
case 54:
{
	// ignore comment
	return null;
}
case 55:
{
	// goto previous state
	$this->popState();
	return null;
}
case 56:
{
	// ignore comment
	return null;
}
case 57:
{
	$this->yybegin(self::YYINITIAL);
	return null;
}
case 58:
{
	return $this->newToken(TK_ID, $this->yytext());
}
case 59:
{
	$this->pushState();
	$this->yybegin(self::IN_DIRECTIVE);
	return $this->newToken(TK_LPAREN);
}
case 60:
{
	$this->popState();
	return $this->newToken(TK_RPAREN);
}
case 61:
{
	return $this->newToken(TK_IS);
}
case 62:
{
	return $this->newToken(TK_IN);
}
case 63:
{
	return $this->newToken(TK_OR);
}
case 64:
{
	return $this->newToken(TK_AND);
}
case 65:
{
	$this->pushState();
	$this->yybegin(self::IN_PARAMETER);
	return $this->newToken(TK_LBRACE);
}
case 66:
{
	// bail out of the interpolation state
	$this->popState();
	return $this->newToken(TK_RBRACE);
}
case 67:
{
	return $this->newToken(TK_SMURK, $this->yytext());
}
case 68:
{
	// skip whitespace
	return null;
}
case 69:
{
	$this->yybegin(self::IN_DIRECTIVE);
	return $this->newToken(TK_LPAREN);
}
case 71:
{
	return $this->newToken(TK_SMURK, $this->yytext());
}
case 72:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 73:
{
	return $this->newToken(TK_ID, $this->yytext());
}
case 74:
{
	return $this->newToken(TK_OR);
}
case 75:
{
	return $this->newToken(TK_AND);
}
case 77:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 78:
{
	return $this->newToken(TK_ID, $this->yytext());
}
case 80:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 81:
{
	return $this->newToken(TK_ID, $this->yytext());
}
case 83:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 85:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 87:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 89:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 91:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 93:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 95:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 97:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 99:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 101:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 103:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 105:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 107:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 109:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 111:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 113:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 115:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 117:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 118:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 119:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 120:
{
	return $this->newToken(TK_ID, $this->yytext());
}
case 121:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 122:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 123:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 124:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 125:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}
case 126:
{
	// check if this macro is registered
	$macro = substr($this->yytext(), 1);
	// this is a registered macro goto macro state
	$this->pushState();
	$this->yybegin(self::IN_START_DIRECTIVE);
	return $this->newToken(TK_DIRECTIVE, $macro);
}

                        }
                    }
                    if ($this->_fatal) {
                        return;
                    }
                    $yy_initial = true;
                    $yy_state = $this->yy_state_dtrans[$this->yy_lexical_state];
                    $yy_next_state = self::YY_NO_STATE;
                    $yy_last_accept_state = self::YY_NO_STATE;
                    $this->yy_mark_start();
                    $yy_this_accept = $this->yy_acpt[$yy_state];
                    if (self::YY_NOT_ACCEPT != $yy_this_accept) {
                        $yy_last_accept_state = $yy_state;
                        $this->yy_buffer_end = $this->yy_buffer_index;
                    }
                }
            }
        }
        return null;
    }
}
